package com.ziq.zcamp.api.repository

import com.gmlive.camp.data.exception.LocalException
import com.ziq.zcamp.api.respond.CampBaseRespond
import com.ziq.zcamp.api.respond.user.UserRequestRefundRespond
import com.ziq.zcamp.api.service.NetWorkException
import com.ziq.zcamp.bean.activities.*
import com.ziq.zcamp.bean.product.ProductRepertoryItem
import com.ziq.zcamp.bean.user.CampUploadData

/**
 * 活动的Repository
 */
interface ActivitiesRepository : Repository {


    /**
     * 活动列表
     * @param page 页码，从1开始
     * @param size 页大小
     * @return 活动列表
     * @throws LocalException : 网络请求时本地出现的异常，如网络请求超时，或者json解析异常等信息
     * @throws NetWorkException : 网络请求时后台返回回来的错误信息
     */
    @Throws(LocalException::class,NetWorkException::class)
    suspend fun obtainActivityList(page:Int, size:Int): ActivitiesInfoList

    /**
     * 活动详情
     * @param id id
     * @return 活动详情
     * @throws LocalException : 网络请求时本地出现的异常，如网络请求超时，或者json解析异常等信息
     * @throws NetWorkException : 网络请求时后台返回回来的错误信息
     */
    @Throws(LocalException::class,NetWorkException::class)
    suspend fun obtainActivityDetails(id:Long): ActivitiesInfo

    /**
     * 活动的票种列表
     * @param activity_id 活动ID
     * @return 票种列表
     * @throws LocalException : 网络请求时本地出现的异常，如网络请求超时，或者json解析异常等信息
     * @throws NetWorkException : 网络请求时后台返回回来的错误信息
     */
    @Throws(LocalException::class,NetWorkException::class)
    suspend fun activitiesTicketList(activity_id : Long): List<ActivitiesTicketsInfo>

    /**
     * 活动票库存列表详情
     * @param ticket_id 票种id
     * @return 活动票库存列表
     * @throws LocalException : 网络请求时本地出现的异常，如网络请求超时，或者json解析异常等信息
     * @throws NetWorkException : 网络请求时后台返回回来的错误信息
     */
    @Throws(LocalException::class,NetWorkException::class)
    suspend fun ticketRepertoryList(ticket_id : String): List<ProductRepertoryItem>




    /**
     * 活动推荐列表
     * @return ActivitiesRecommendList
     * @throws LocalException : 网络请求时本地出现的异常，如网络请求超时，或者json解析异常等信息
     * @throws NetWorkException : 网络请求时后台返回回来的错误信息
     */
    @Throws(LocalException::class,NetWorkException::class)
    suspend fun activityRecommendedList(): ActivitiesRecommendList
}